vlwkaos' digital garden

북 리뷰 - TDD Test Driven Development

개요

  • 켄트 백 '테스트 주도 개발' 책을 통해 테스트 주도 개발에 대해 알아본다.

요약 및 느낀점

1

  • TDD 특징
    • TDD도 결국 개발 방법론 중 하나. 상황에 맞게 활용할 수 있으면 된다.
    • 테스트 작성의 실패는 컴파일 에러부터 시작
    • 개발 중 막히는 부분을 더 쪼개서 만들어나갈 수 있다는 사실을 아는 것만으로도 큰 도구가 된다
  • TDD 장점
    • 자기가 만든것을 보호하기 위한 포장
    • 어찌됐든 테스트 코드 작성은 있으면 좋다
    • 기능을 쪼개고 단위 테스트를 작성함으로써 오는 결과물에 대한 보장.
    • 두려움을 없애준다
  • TDD 단점
    • 기술적으로 테스트 작성 자체가 어려운 경우, 테스트 작성시간이 길어지면 단점
    • 머릿속에 그리고 있는 것은 한번에 구현 가능하다면 작은 단위의 테스트 작성은 스킵할 수 있다.
  • 🤔
    • TDD시 작업 및 커밋 단위는 어떻게 가져가는게 좋은가?

2

  • 목적은 작동하는 깔끔한 코드를 얻는 것
    • 작동하는 코드를 먼저 작성한다
    • 리팩토링으로 정리한다
  • value object pattern 값 객체 패턴. 객체 값을 immutable하게 이용하기
  • value object pattern 테스트하는 방법
    • 삼각 측량: 두번째 테스트를 제공 -> 일반화
    • 예: 값 객체, 다른 값 객체를 모두 테스트한다.
  • 결국 테스트와 코드는 서로가 서로의 테스트케이스로 점진적으로 개발을 진척하게 한다.
    • 처음부터 완성된 코드도 없고 테스트도 없다
  • 추상화 이전에 중복코드 작성, 테스트 추가 상위 개념 도출
  • 하위 클래스 역할 모호 -> 없애기 위해 팩토리 -> 테스트 수정 필요
  • 기억하자. TDD는 구현이 어려울 때 더 적은 단위로 작업할 수 있다는 사실을 알려주는 도구일 뿐이다.
    • 무조건적으로 신봉할 필요가 없다.
    • 실패없이 리팩토링하는 방법이라고 보는 편이 더 유사한것 같음
    • 테스트는 작성하고 끝나는게 아니라 개발과정에 맞춰서 계속 변하는 것
    • 검증의 역할보다 말 그대로 테스트 주도 개발이 이뤄지게하는 역할이 더 큼

3

Referred in

북 리뷰 - TDD Test Driven Development